<?php include 'header.php'; ?>
<?php include 'sidebar.php'; ?>
		<div id="gc-pagecontent" class="g-unit" style="position: relative;">
        <h1 class="page_title">运行应用程序</h1>
<p>一个 Yakexi 应用程序由三部分组成：
<ul>
<li>一个或多个 <a href="/requesthandlerclass.html">RequestHandler</a> 类（如<a href="/requesthandlers.html">请求处理程序</a>中所述）</li>
<li>将网址映射至 RequestHandler 类的 Yakexi 对象</li>
<li>使用 Yakexi::run_sae_app() 运行一个主要例程</li>
</ul>
</p>
<p>以下示例将四个网址路径映射到四个 RequestHandler 类（未显示），然后使用 <code>Yakexi::run_sae_app()</code> 运行该应用程序：</p>

<pre class="prettyprint">
&lt;?php
require 'yakexi/Yakexi.php';
use yakexi as ykx, yakexi\Yakexi;

$application = new Yakexi(array('/' => MainPage,
                                '/newentry' => NewEntry,
                                '/editentry' => EditEntry,
                                '/deleteentry' => DeleteEntry
                               ), True);
$application->run_sae_app();
?&gt;
</pre>

<p>Yakexi 构造函数使用将网址路径映射到 RequestHandler 类的关联数组。</p>

<p>可选的第二个参数设置为 <code>True</code> 可将应用程序设置为调试模式，这样可通知 Yakexi 在处理程序引发异常时在浏览器中显示错误信息。默认情况下，当发生错误时，Yakexi 只返回一个 HTTP 500 错误。</p>


<h2 id="URL_Mappings">网址映射</h2>

<p>映射中的网址路径是一个正则表达式。正则表达式可以包含正则表达式分组以与网址部分相匹配。将分组中相匹配的模式作为参数传递至请求处理程序。</p>

<pre class="prettyprint">
&lt;?php
require 'yakexi/Yakexi.php';
use yakexi as ykx, yakexi\Yakexi;

class BrowseHandler extends ykx\RequestHandler
{
    public function get($category, $product_id)
    {
        // Display product with given ID in the given category.
    }
}

// Map URLs like /browse/(category)/(product_id) to BrowseHandler.
$application = new Yakexi(array('/browse/(.*)/(.*)' => BrowseHandler, True);
$application->run_sae_app();
?&gt;
</pre>

<p class="note"><b>提示：</b>Sina App Engine 基于在应用程序的 <code>config.yaml</code> 文件中所指定的网址和映射将请求传送至 PHP 脚本。Yakexi类会进一步将具体的网址路径映射至请求处理程序。如何使用这两种映射全由您决定：您可以将所有非静态网址映射至单个 PHP 脚本，然后使该脚本将所有动态网址调度到处理程序。您也可以将功能分组成由不同脚本运行的多个 PHP 应用程序，然后使用 <code>config.yaml</code> 将相应的网址映射至相应的应用程序。</p>
<div id="gc-collapsible" style="min-height: 400px;" class=""></div>
		</div>
	</div>
</div>
<?php include 'footer.php'; ?>